package Testes;

import AnaliseSemantica.CheckType;
import AnaliseSemantica.TabelaSimbolo;
import AnaliseSemantica.SymbolTableVisitor;
import AnaliseSintatica.ParseException;
import AnaliseSintatica.Parser;

public class VerificacaoTipoTest {
	public static void main(String[] args) throws ParseException {
		Parser p = null;
		if (args.length == 0) {
            System.out.println("Arquivo n\u00e3o encontrado.");
        }
        else if (args.length == 1) {
            System.out.println("Lendo o arquivo " + args[0] + " ...");
            try {
                p = new Parser(new java.io.FileInputStream(args[0]));
            } catch (java.io.FileNotFoundException e) {
            System.out.println("Arquivo " + args[0] + " n\u00e3o encontrado.");
                return;
            }
        }
        try {
        	SymbolTableVisitor visitor = new SymbolTableVisitor();
			TabelaSimbolo tabela = visitor.buildSymbolTable(p.program());
        	new CheckType(tabela).visit(p.program());           
            System.out.println("Verificacao de Tipos OK");
        } catch (ParseException e) {
            System.out.println(e.getMessage());
            System.out.println("Erros encontrados durante a an\u00c3\u00a1lise.");
        }
	}
}
